<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // Promise.race实现 
    let p1 = new Promise((reslove, reject) => {
      setTimeout(() => {
        reslove(111)
      }, 2000);
    })
    let p2 = new Promise((reslove, reject) => {
      setTimeout(() => {
        reslove(222)
        // reject("err")
      }, 1000);
    })
    let p3 = new Promise((reslove, reject) => {
      setTimeout(() => {
        reslove(333)
      }, 3000);
    })

    // Promise.race([p1,p2,p3]).then(res=>{
    //     console.log(res);
    // },err=>{
    //     console.log(err);
    // })

    // 声明方法
    function MyRace (arr) {
      return new Promise((reslove, reject) => {
        // reslove(111);
        // arr.forEach(p=>{
        //     p.then(res=>{
        //         reslove(res);
        //     },err=>{
        //         reject(err);
        //     })
        // })
        arr.forEach(p => {
          p.then(reslove, reject)
        })
      });
    }
    // 调用方法 
    MyRace([p1, p2, p3]).then(res => {
      console.log(res);
    }, err => {
      console.log(err);
    })





    // Promise.all 实现

    // function MyAll (arr) {
    //   let count = 0;
    //   return new Promise(reslove => {
    //     let resArr = [];  // 存放 结果的数组
    //     arr.forEach(p => {
    //       p.then(res => {
    //         resArr.push(res);  // 收集结果添加到 resArr里去
    //         // console.log(resArr);
    //         count++;
    //         if (count >= arr.length) {
    //           // 一定是结果收集完毕
    //           reslove(resArr);
    //         }
    //         // reslove(resArr);
    //       })

    //     })
    //   })
    // }
    // MyAll([p1, p2, p3]).then(res => {
    //   console.log("外部打印", res);
    // })



  </script>
</body>

</html>